/**
 * 
 */
package compilador.analizadorSintactico.categoriasSintacticas;

import java.util.ArrayList;

import javax.swing.tree.DefaultMutableTreeNode;

/**
 * @author Nolberto Castellanos Rodriguez
 * @author Yurani Alejandra Salamanca Lotero
 *
 * Clase que representa los metodos que hay en una clase
 */
public class DeclaracionMetodos {

//	-------------------------------------------------------------------------------------------------
//	ATRIBUTOS
//	-------------------------------------------------------------------------------------------------
	
	/**
	 *  Atributo que contiene la lista de metodos en una clase
	 */
	private ArrayList<Metodo> metodos;


//	-------------------------------------------------------------------------------------------------
//	CONSTRUCTORES
//	-------------------------------------------------------------------------------------------------
	
	/**
	 * Constructor que permite crear una declaracion de metodos
	 * @param Metodos. Metodos de la clase
	 */
	public DeclaracionMetodos(ArrayList<Metodo> metodos) {
		super();
		this.metodos = metodos;
	}
	

//	-------------------------------------------------------------------------------------------------
//	METODOS
//	-------------------------------------------------------------------------------------------------	

	
	/**
	 * Metodo que permite agregar hojas al nodo de la clase
	 * @return el nodo de la clase con sus hojas
	 */
	public  DefaultMutableTreeNode getArbolVisual(){
		DefaultMutableTreeNode miRaiz =  new  DefaultMutableTreeNode("Declaracion de Metodos");
		
		for (Metodo metodo : metodos) {
			miRaiz.add(metodo.getArbolVisual());
			
		}
		
		return miRaiz;
	}
	
	/**
	 * @return
	 */
	public String getJavaCode() {
		String retornable = "";
		
		if(metodos != null)
			for (Metodo mt : metodos) {
				retornable += mt.getJavaCode()+"\n";
			}
		
		return retornable;
	}
	
	
//	-------------------------------------------------------------------------------------------------
//	Getters & Setters
//	-------------------------------------------------------------------------------------------------	
	
	/**
	 * Metodo que nos retorna el valor de metodos
	 * @return  metodos. Valor retornado
	 */
	public ArrayList<Metodo> getMetodos() {
		return metodos;
	}

	/**
	 * Metodo que permite asignar el valor de metodos
	 * @param metodos. Valor a asignar metodos
	 */
	public void setMetodos(ArrayList<Metodo> metodos) {
		this.metodos = metodos;
	}
}
